package fiuba.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
import java.lang.StringBuffer;
import org.hibernate.annotations.Sort;
import org.hibernate.annotations.SortType;
import java.util.List;

@Entity
public class Estructura extends BaseObject {
	/**
	 * 
	 */
	private static final long serialVersionUID = -3808020992813093860L;
	private Long id;

	private Integer rows;
	private Integer cols;
	private String 	descripcion;
	private Integer rowPrincipal;
	private Integer rowMenu;
	private Integer colPrincipal;
	private Integer colMenu;
	private String 	backgroundColor;
	private String 	hAlign;
	private String anchos;
	private String altos;
    private Date fechaBaja;
	
	private List<DetalleEstructura> detalles = new ArrayList<DetalleEstructura>();
	

	
	
	@Override
	public boolean equals(Object o) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return null;
	}
	@Column
	public Integer getRows() {
		return rows;
	}

	public void setRows(Integer rows) {
		this.rows = rows;
	}
	@Column
	public Integer getCols() {
		return cols;
	}

	public void setCols(Integer cols) {
		this.cols = cols;
	}
	@Column(length=50, unique=true)
	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	@Column
	public Integer getRowPrincipal() {
		return rowPrincipal;
	}

	public void setRowPrincipal(Integer rowPrincipal) {
		this.rowPrincipal = rowPrincipal;
	}
	@Column
	public Integer getRowMenu() {
		return rowMenu;
	}
	
	public void setRowMenu(Integer rowMenu) {
		this.rowMenu = rowMenu;
	}
	@Column
	public Integer getColPrincipal() {
		return colPrincipal;
	}
	
	public void setColPrincipal(Integer colPrincipal) {
		this.colPrincipal = colPrincipal;
	}
	@Column
	public Integer getColMenu() {
		return colMenu;
	}

	public void setColMenu(Integer colMenu) {
		this.colMenu = colMenu;
	}

	@OneToMany(mappedBy="estructura")
	public List<DetalleEstructura> getDetalles() {
		Collections.sort(this.detalles);
		return detalles;
	}

	public void setDetalles(List<DetalleEstructura> detalles) {
		this.detalles = detalles;
	}
	@Id @GeneratedValue(strategy = GenerationType.AUTO) 
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	
	// El mas importante de todos, genera el HTML
	@Column(length=10)
	public String getBackgroundColor() {
		return backgroundColor;
	}

	public void setBackgroundColor(String backgroundColor) {
		this.backgroundColor = backgroundColor;
	}
	@Column(length=10)
	public String getHAlign() {
		return hAlign;
	}

	public void setHAlign(String align) {
		hAlign = align;
	}
	@Column(length=100)
	public String getAnchos() {
		return anchos;
	}

	public void setAnchos(String anchos) {
		this.anchos = anchos;
	}
	@Column(length=100)
	public String getAltos() {
		return altos;
	}

	public void setAltos(String altos) {
		this.altos = altos;
	}

	public Date getFechaBaja() {
		return fechaBaja;
	}

	public void setFechaBaja(Date fechaBaja) {
		this.fechaBaja = fechaBaja;
	}
}
